package command_pattern.quash;

import java.util.ArrayList;
import java.util.List;

/**
 * @author 申书航
 * @version 1.0
 *
 * 历史命令类，用于存储和管理命令的历史记录
 */
public class HistoryCommand extends Command {

    private final List<Command> commands;

    /**
     * 构造函数，初始化命令列表
     */
    public HistoryCommand() {
        super(null, null);
        commands = new ArrayList<>();
    }

    @Override
    public void execute() {
        // 执行命令的方法，暂未实现
    }

    /**
     * 将命令推入历史记录中
     *
     * @param command 需要被推入历史记录的命令
     */
    public void push(Command command) {
        try {
            Command clone = (Command) command.clone();
            commands.add(clone);
        } catch (CloneNotSupportedException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 从历史记录中弹出最近的命令
     *
     * @return 最近的命令，如果历史记录为空，则返回null
     */
    public Command pop() {
        if (commands.isEmpty()) {
            return null;
        }
        Command command = commands.get(0);
        commands.remove(0);
        return command;
    }
}
